nestedsvm: reduce TLB flushes
authorKeir Fraser <keir@xen.org>
Fri, 20 May 2011 08:07:54 +0000 (09:07 +0100)
committerKeir Fraser <keir@xen.org>
Fri, 20 May 2011 08:07:54 +0000 (09:07 +0100)
Reduce TLB flushes:
1. When we update the cr3 during VMRUN/VMEXIT emulation
    we toggle between n1asid and n2asid forth and back
    => no TLB flush needed
2. Only flush n1asid or n2asid depending on vcpu guest mode
    and not both unconditionally.

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Signed-off-by: Keir Fraser <keir@xen.org>
xen/arch/x86/hvm/svm/svm.c

index 8b1557b8ca4755a2d25bef71515c87109043ae93..55d76323f384f14614e9f5b77668dc15b9556e32 100644 (file)
@@ -454,7 +454,7 @@ static void svm_update_guest_cr(struct vcpu *v, unsigned int cr)
         if ( !nestedhvm_enabled(v->domain) )
             hvm_asid_flush_vcpu(v);
         else if ( nestedhvm_vmswitch_in_progress(v) )
-            ; /* We toggle between n1asid/n2asid -> no flush required. */
+            ; /* CR3 switches during VMRUN/VMEXIT do not flush the TLB. */
         else
             hvm_asid_flush_vcpu_asid(
                 nestedhvm_vcpu_in_guestmode(v)